package mm.chenchen.utils;

import org.ini4j.Wini;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class IniUtils {

    public static Map<String, Map<String, String>> readIni(String filePath) {
        Map<String, Map<String, String>> map = new HashMap<>();
        Wini ini = null;
        try {
            ini = new Wini(new File(filePath));
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
        Set<String> sectionNames = ini.keySet();
        if (!ObjectUtils.isEmpty(sectionNames)) {
            Wini finalIni = ini;
            sectionNames.forEach(ele -> {
                Map<String, String> tmp = finalIni.get(ele);
                map.put(ele, tmp);
            });
        }
        return map;
//        // read
//        Ini.Section section = ini.get("dev");
//        String url = section.get("url");
//        String user = section.get("user");
//        String password = section.get("password");
//        System.out.println(url);
//        System.out.println(user);
//        System.out.println(password);
//        // or just use java.util.Map interface
//        Map<String, String> map = ini.get("dev");
//        String url1 = map.get("url");
//        String user1 = map.get("user");
//        String password1 = map.get("password");
//        System.out.println(url1);
//        System.out.println(user1);
//        System.out.println(password1);
//        // get all section names
//        // Set<String> sectionNames = ini.keySet();
//        // for(String sectionName: sectionNames) {
//        //   Profile.Section section1 = ini.get(sectionName);
//        // }
//        // write
//        ini.put("sleepy", "age", 55);
//        ini.put("sleepy", "weight", 45.6);
//        ini.store();
    }

    public static boolean write(String filePath, Map<String, Map<String, String>> map) {
        Wini ini = null;
        try {
            ini = new Wini(new File(filePath));
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
        if (!ObjectUtils.isEmpty(map)) {
            Wini finalIni = ini;
            map.forEach((key, value) -> {
                if (!ObjectUtils.isEmpty(value)) {
                    value.forEach((tmpkey, tmpvalue) -> {
                        finalIni.put(key, tmpkey, tmpvalue);
                    });
                }
            });
            try {
                ini.store();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return true;
    }
}